# 模块 一系列功能的集合体
# 模块分类
# 内置模块（c和c++写的，python解释器内置的）
# 第三方模块（别人写好的模块）
# 自定义模块 （自己写的模块）


# 导入自定义模块
# 导入模块会发生三步
# 1执行模块文件(只在首次导入发生)
# 2产生模块的名称空间
# 3当前文件中产生指向模块的名称
import sys

from function import closure_func, closure_func as cf

# 引用模块中的内容 模块.名字
closure_func.x = 4
print(closure_func.x)

# 同时导入多个模块 （不建议）

# 导入的顺序规范
# 1.内置模块
# 2.第三方模块
# 3.自定义模块

# 给模块取别名

# 模块是第一类对象
c = cf

# 模块命名应该采用纯小写+下划线

# 运行.py文件  __name__='__main__'
# 作为模块导入时 __name__='模块名'

import test_module

# import 模块 调用必须用模块名前缀调用，不会发生名称冲突
# from 模块 import 属性 可以不用前缀
from test_module import x
from test_module import get

get()
from test_module import *  # 一次导入所有

# 模块查找优先级 内存->硬盘
# 通过sys.path查看导入模块的查找路径
print(sys.path)
# 要添加模块时，把模块的查找地址添加进入sys.path
sys.path.append(r'D:\Learning\python\base\module\aa')

# 通过sys.modules查看已经加载到内存中的模块
print(sys.modules)
